import { cmdCircularArray } from '@app-cad/environments/nextcad/commands/feature/cmd-array-circle';
import { cmdLinearArray } from '@app-cad/environments/nextcad/commands/feature/cmd-array-linear';
import { cmdChamfer } from '@app-cad/environments/nextcad/commands/feature/cmd-chamfer';
import { cmdCutter } from '@app-cad/environments/nextcad/commands/feature/cmd-cutter';
import { cmdFillet } from '@app-cad/environments/nextcad/commands/feature/cmd-fillet';
import { cmdRevol } from '@app-cad/environments/nextcad/commands/feature/cmd-revol';
import { cmdShell } from '@app-cad/environments/nextcad/commands/feature/cmd-shell';
// import { FeatureBaseCommand } from '@app-cad/types';
import { cmdDeleteFace } from '@app-cad-env/nextcad/commands/feature/cmd-delete-face';
import { cmdRepairFace } from '@app-cad-env/nextcad/commands/feature/cmd-repair-face';
import { cmdReplaceFace } from '@app-cad-env/nextcad/commands/feature/cmd-replace-face';
import { cmdSplitFace } from '@app-cad-env/nextcad/commands/feature/cmd-split-face';
import { cmdBox } from '@app-cad/environments/nextcad/commands/feature/cmd-box';
import { cmdCone } from '@app-cad/environments/nextcad/commands/feature/cmd-cone';
import { cmdCylinder } from '@app-cad/environments/nextcad/commands/feature/cmd-cylinder';
import { cmdDraft } from '@app-cad/environments/nextcad/commands/feature/cmd-draft';
import { cmdExtrudeCut } from '@app-cad/environments/nextcad/commands/feature/cmd-extrude/cut';
import { cmdStretch } from '@app-cad/environments/nextcad/commands/feature/cmd-extrude/extrude';
import { cmdHole } from '@app-cad/environments/nextcad/commands/feature/cmd-hole';
import { cmdLoft } from '@app-cad/environments/nextcad/commands/feature/cmd-loft';
import { cmdLoftCut } from '@app-cad/environments/nextcad/commands/feature/cmd-loft-cut';
import { cmdPrism } from '@app-cad/environments/nextcad/commands/feature/cmd-prism';
import { cmdPyramid } from '@app-cad/environments/nextcad/commands/feature/cmd-pyramid/cmd-pyramid';
import { cmdRevolCut } from '@app-cad/environments/nextcad/commands/feature/cmd-revol-cut';
import { cmdSphere } from '@app-cad/environments/nextcad/commands/feature/cmd-sphere';
import { cmdStiffener } from '@app-cad/environments/nextcad/commands/feature/cmd-stiffener';
import { cmdSweep } from '@app-cad/environments/nextcad/commands/feature/cmd-sweep';
import { cmdSweepCut } from '@app-cad/environments/nextcad/commands/feature/cmd-sweep-cut';
import { cmdThickness } from '@app-cad/environments/nextcad/commands/feature/cmd-thickness';
import { cmdThicknessCut } from '@app-cad/environments/nextcad/commands/feature/cmd-thickness-cut';
import { cmdTorus } from '@app-cad/environments/nextcad/commands/feature/cmd-torus';
import { cmdTube } from '@app-cad/environments/nextcad/commands/feature/cmd-tube';
import { cmdWedge } from '@app-cad/environments/nextcad/commands/feature/cmd-wedge';
import { CommandConfigItem } from './types';

export const featureCommandList: CommandConfigItem[] = [
  { objType: 'Part::Extrude', command: cmdStretch },
  { objType: 'Part::Fillet', command: cmdFillet },
  { objType: 'Part::Chamfer', command: cmdChamfer },
  { objType: 'Part::Revol', command: cmdRevol },
  { objType: 'Part::ThickShell', command: cmdShell },
  { objType: 'Part::Array', command: cmdCircularArray, mode: 'circle' },
  { objType: 'Part::Array', command: cmdCircularArray, mode: 'doubleCircle' },
  { objType: 'Part::Array', command: cmdLinearArray, mode: 'linear' },
  { objType: 'Part::Array', command: cmdLinearArray, mode: 'doubleLinear' },
  { objType: 'Part::HoleCutter', command: cmdExtrudeCut, type: 'HoleE' },
  { objType: 'Part::HoleCutter', command: cmdRevolCut, type: 'HoleR' },
  { objType: 'Part::Thickness', command: cmdThickness, isCutter: false },
  { objType: 'Part::Thickness', command: cmdThicknessCut, isCutter: true },
  { objType: 'Part::HoleCutter', command: cmdExtrudeCut },
  { objType: 'Part::Cutter', command: cmdCutter },
  { objType: 'Part::Draft', command: cmdDraft },
  { objType: 'Part::Sweep', command: cmdSweep, mode: 'fuse' },
  { objType: 'Part::Sweep', command: cmdSweepCut, mode: 'cut' },
  { objType: 'Part::Box', command: cmdBox },
  { objType: 'Part::Cylinder', command: cmdCylinder },
  { objType: 'Part::Sphere', command: cmdSphere },
  { objType: 'Part::Tube', command: cmdTube },
  { objType: 'Part::Torus', command: cmdTorus },
  { objType: 'Part::Cone', command: cmdCone },
  { objType: 'Part::Pyramid', command: cmdPyramid },
  { objType: 'Part::RemoveFace', command: cmdDeleteFace },
  { objType: 'Part::HealFace', command: cmdRepairFace },
  { objType: 'Part::ReplaceFace', command: cmdReplaceFace },
  { objType: 'Part::SplitFace', command: cmdSplitFace },
  { objType: 'Part::Prism', command: cmdPrism },
  { objType: 'Part::Wedge', command: cmdWedge },
  { objType: 'Part::Loft', command: cmdLoft, mode: 'fuse' },
  { objType: 'Part::Loft', command: cmdLoftCut, mode: 'cut' },
  { objType: 'Part::Stiffener', command: cmdStiffener },
  { objType: 'Part::Holes', command: cmdHole },
  // {
  //   objType: 'Part::Curve',
  //   type: 'ArcOfCircle',
  //   mode: 'center-point',
  //   command: cmdCircleCenterPoint,
  // },
];
